package com.xd.core.debt.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.github.pagehelper.Page;
import com.xd.core.debt.dto.*;
import com.xd.core.debt.entity.Debt;
import com.xd.core.debt.vo.*;

/**
 * <p>
 * 债权管理对应表 服务类
 * </p>
 *
 * @author ZCH
 * @since 2025-02-26
 */
public interface IDebtService extends IService<Debt> {

    /**
     * @description: 未转让债权分页查询
     * @author: ZCH
     * @date: 2025/2/27 0027 13:46
     * @param: [debtQuery]
     * @return: com.github.pagehelper.Page<com.xd.core.debtmanagement.vo.DebtPageVo>
     **/
    Page<DebtPageVo> getDebtList(DebtQuery debtQuery);

    /**
     * @description: 批量获取债权用于转让
     * @author: ZCH
     * @date: 2025/2/28 0028 10:12
     * @param: [ids]
     * @return: com.xd.core.debt.vo.DebtInfoForTransVo
     **/
    DebtAndPreDepositPayOrderVo getBatchDebt(GetBatchDebtDto batchDebtDto);

    /**
     * @description: 债权转让
     * @author: ZCH
     * @date: 2025/3/3 0003 21:26
     * @param: [ids]
     * @return: void
     **/
    void debtTrans(DebtTansDto debtTansDto);

    /**
     * @description: 提前还款数据查询
     * @author: ZCH
     * @date: 2025/3/6 0006 9:51
     * @param: [id]
     * @return: com.xd.core.debt.vo.EarlyRepaymentVo
     **/
    EarlyRepaymentVo earlyRepaymentQuery(Integer id);

    /**
     * @description: 提前还款
     * @author: ZCH
     * @date: 2025/3/10 0010 14:35
     * @param: [dto]
     * @return: void
     **/
    EarlyRepayVo earlyRepayment(EarlyRepaymentDto dto,String companyType,String isOut);

    /**
     * @description: 申请公证书
     * @author: ZCH
     * @date: 2025/3/14 0014 15:35
     * @param: [dto]
     * @return: void
     **/
    void applyCertificate(ApplyCertificateDto dto);

    /**
     * @description: 债权列表数据导出
     * @author: ZCH
     * @date: 2025/3/24 0024 9:54
     * @param: [debtQuery, id]
     * @return: void
     **/
    void exportDebtInfoList(DebtQuery debtQuery, Integer id);

    /**
     * @description: 查看单条债权详情
     * @author: ZCH
     * @date: 2025/3/25 0025 14:15
     * @param: [id]
     * @return: com.xd.core.debt.vo.DebtDetailVo
     **/
    DebtDetailVo getDebtOne(DebtOneDto dto);

    /***
     * @description 退保申请数据回显
     * @author Zch
     * @date 14:53 2025/6/30 星期一
     * @return com.xd.core.debt.vo.RefundApplicationVo
     **/
    RefundApplicationVo getRefundApplication(Integer incomingId);

    /***
     * @description 退保申请
     * @author Zch
     * @date 10:35 2025/7/3 星期四
     * @return void
     **/
    void applySurrender(ApplySurrenderDto dto);

    /***
     * @description 分期债权分页查询
     * @author Zch
     * @date 15:33 2025/8/21 星期四
     * @return com.github.pagehelper.Page<com.xd.core.debt.vo.InstallmentDebtPageVo>
     **/
    Page<InstallmentDebtPageVo> getInstallmentDebtList(InstallmentDebtQuery query);

    /***
     * @description 修改代扣开关状态
     * @author Zch
     * @date 11:29 2025/8/25 星期一
     * @return void
     **/
    void changeIsWithhold(ChangeIsWithholdDto dto);

    /***
     * @description 分期资产导出
     * @author Zch
     * @date 16:49 2025/9/11 星期四
     * @return void
     **/
    void exportGuaranteeSlipList(InstallmentDebtQuery query, Integer id);
}
